草庐IT

c++ - 池化线程的 SetThreadAffinityMask

全部标签

c - 在 Windows 中拦截库调用的最简单方法是什么?

我想监控/过滤互联网流量。我计划通过拦截在WinSockAPI中发送和接收的调用来做到这一点。修补/拆卸太困难且耗时。dll方法也非常耗时,因为我要修补的只是2个调用,我必须重现整个dll。有没有一种简单的方法来生成重定向dll?或者也许是一种更简单的拦截调用的方法? 最佳答案 反汇编和打补丁并不容易,这就是为什么有DLL注入(inject)和钩子(Hook)可以用来拦截的原因。以下是您开始所需的一切:DLLinjection.ThreeWaystoInjectYourCodeintoAnotherProcess

c - 在 C 中禁用崩溃对话框

我想禁用(在VS2010C程序中)发生GPF时屏幕上弹出的崩溃对话框窗口(您知道xxx.exe停止工作)我在win2008和win7上试过:-SetErrorMode(SetErrorMode(SEM_NOGPFAULTERRORBOX)|SEM_FAILCRITICALERRORS);-try/catch(withSEH,butsomepartsofthecodearen'twrappedin)-SetUnhandledExceptionFilter()没有任何作用...仍然是这个该死的窗口我是不是忘记了什么?唯一有效的是修改寄存器库中的“DontShowUI”键(HKEY_LOCA

c++ - 如何在 Windows 中提取目录属性?

是否有任何函数返回一个目录中有多少个文件?是遍历所有文件的唯一方法吗?(例如,当您在Windows中右键单击目录时,它会列出:目录中的7个文件。有没有办法提取该信息?“它”是如何获取该信息的?)谢谢。 最佳答案 我不知道是否有更好的方法,但我使用FindFirstFile/FindNextFile来执行此操作(为清楚起见,删除了一些错误检查):WIN32_FIND_DATAffd;HANDLEhFind=INVALID_HANDLE_VALUE;_TCHARszDir[]=_T("somedir\\*");hFind=FindFir

c - 如何: Safeguard memory - strncat()?

function(char*a,char*b){charnewStr[100];strncpy(newStr,a,sizeof(newStr));//Line1-copynomorethan100bytesstrncat(newStr,b,(sizeof(newStr)-strlen(newStr)));//Line2-?newStr[99]=NULL;//Line3-nullterminatestring}第2行:正确指定100bytes减去从a复制过来的内容的strlen以确保我不会复制超过100个字节?谢谢。 最佳答案 str

c - 如何通过在 Windows 机器上安装 Cygwin 来使用 gcc?

我已经为我的netbeansIDE安装了cygwin包。我可以在netBeans项目中使用它。但现在我想在cmd提示符下使用gcc编译器。我该怎么做?在Linux中,我们打开一个终端并输入gccfilename.c然后编译。现在我想在Windows中使用Cygwin的gcc做同样的事情。我可以在cmd中输入gccfilename.c并编译吗?如果是,怎么办?编辑:在cmd中写入gcc--version我得到访问被拒绝编辑1:在C:驱动器中,我有一个名为Cygwin的文件夹,其中包含Cygwin.bat。当我运行它时,会打开一个新的提示符,当我在其中键入gccfilename.c时,它会

C 函数没有任何输入的 'wait',但检测是否有?

是否有一个C函数不等待输入,但如果有,它会检测到输入?我在这里要做的是无限循环,直到按下任何键。我是新手,到目前为止我学到的所有输入功能都在等待用户输入一些东西。我希望我很清楚,但如果我不清楚,我很乐意发布代码.. 最佳答案 Windowskbhit()正是执行此非阻塞键盘字符就绪检查,并且有一个用于Linux的kbhit()overhere 关于C函数没有任何输入的'wait',但检测是否有?,我们在StackOverflow上找到一个类似的问题: http

c - 使用 C 的 Windows 进程间通信 (IPC)

我有一个用C语言和MicrosoftVisualC++编写的旧程序,我需要实现某种“保持事件”,因此我能够将进程间通信接收到一个新程序中,该程序将终止并重新启动如果在过去5秒内没有收到消息,则第一个。问题是我一直在寻找任何C语言的WindowsIPC教程或示例,但我找到的几乎所有内容都是针对C++的。任何帮助或资源?编辑:正如@Adriano在回答中所建议的那样,我正在尝试使用共享内存。但是由于我无法捕获的某种异常,启动程序正在被Windows终止。调用CopyMemory时发生。代码如下:#include"stdafx.h"#include"windows.h"#include"io

windows - 在 64 位 Windows 应用程序中获取 TID(线程信息 block )的最快方法?

我有一个计算密集型模块,我在其中添加了堆栈跟踪以便能够找到特定问题。尽管启用此堆栈跟踪时允许应用程序运行得更慢,但它不能运行慢10倍。这就是为什么我不使用DBGHELP.DLL中的StackWalk例程,而是使用帧指针自己遍历堆栈(因此我不使用FramePointerOmission编译器选项)。在大多数情况下,获取调用堆栈工作正常并且非常快,但在某些情况下,我的逻辑会失败,因为其中一个帧指针指向堆栈外的地址(不多,只是一点点)。我知道这可能是某个地方的错误,但为了能够使我的代码更安全,我需要一种方法来检查帧指针是否指向当前线程堆栈中的内存位置。该应用程序为64位,可在Windows下

由于权限,无法在 Windows 7 中使用 fopen 进行读取或写入

我一直在寻找这个答案,但找不到解决方案。基本上我正在尝试读取和写入计算机c驱动器中的文件。但是,因为它是Windows7,所以它选择在背面造成痛苦,并且不允许我的C程序执行它。我试过以管理员模式运行它以及尝试使用不同的目录。当运行以下代码时:FILE*fp=fopen(strIn,"r");if(fopen(strIn,"r")==NULL){printf("Error:%d(%s)\n",errno,strerror(errno));getchar();}返回的错误是“Error13permissionisdenied”。我知道微软不再喜欢使用fopen因为它更喜欢fopen_s但我

带参数的 C++ 简单线程(无 .net)

我已经在互联网上搜索了一段时间并找到了不同的解决方案,但后来都没有真正起作用或者对我的使用来说太复杂了。直到2年前我才使用C++,所以它可能有点生疏:D我目前正在编写一个将数据发布到URL的程序。它只发布数据。为了发布数据,我使用curl,但它会阻塞主线程,并且当第一个帖子仍在运行时,第二个帖子应该开始。最后大概有5-6个post操作同时运行。现在我想将带有curl的帖子推送到另一个线程中。每个帖子一个线程。线程应该得到一个字符串参数,其中包含要推送的内容。我目前被困在这个问题上。尝试了Windows的WINAPI,但在读取参数时崩溃了。(在我的示例中,第二个线程仍在运行,而主线程结束